www.gusucode.com > VC++ 通达信系统设置V3.0-源码程序 > VC++ 通达信系统设置V3.0-源码程序/code/EditXXMDlg.cpp

    // EditXXMDlg.cpp : implementation file
// Download by http://www.NewXing.com

#include "stdafx.h"
#include "tdxwcfg.h"
#include "EditXXMDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern int GetComboPos(int TypeInt);

/////////////////////////////////////////////////////////////////////////////

CEditXXMDlg::CEditXXMDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CEditXXMDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEditXXMDlg)
	m_XXMPath = _T("");
	m_XXMTopic = _T("");
	m_TPF = _T("");
	m_nTitleRow = 0;
	//}}AFX_DATA_INIT
	m_bAdd = FALSE;
}


void CEditXXMDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEditXXMDlg)
	DDX_Control(pDX, IDC_XXMTYPE_COMBO, m_ctrlXXMType);
	DDX_Text(pDX, IDC_XXMPATH_EDIT, m_XXMPath);
	DDX_Text(pDX, IDC_XXMTOPIC_EDIT, m_XXMTopic);
	DDX_Text(pDX, IDC_TPF_EDIT, m_TPF);
	DDX_Text(pDX, IDC_TITLEROW, m_nTitleRow);
	DDV_MinMaxInt(pDX, m_nTitleRow, 0, 100);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEditXXMDlg, CDialog)
	//{{AFX_MSG_MAP(CEditXXMDlg)
	ON_BN_CLICKED(IDC_BROW, OnBrow)
	ON_CBN_SELCHANGE(IDC_XXMTYPE_COMBO, OnSelchangeXxmtypeCombo)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN1, OnDeltaposSpin1)
	ON_EN_KILLFOCUS(IDC_TITLEROW, OnKillfocusTitlerow)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//将tempStr拆成两半
CString CEditXXMDlg::GetTPF(CString& tempStr)
{
	CString ResultStr;
	int pos = tempStr.ReverseFind('\\');
	if(pos == -1) 
		ResultStr = "*.*";
	else
		ResultStr = tempStr.Mid(pos+1);
	tempStr = tempStr.Mid(0,pos+1);
	return ResultStr;
}

BOOL CEditXXMDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	if(!m_bAdd)	SetWindowText("修改消息面");
	else		SetWindowText("增加消息面");

	for(int i = 0;i < 6;i++)
		m_ctrlXXMType.AddString(XXMTypeStr[i]);

	if(!m_bAdd)
	{
		m_CurSelType = GetComboPos(m_XXMType);
		if(m_CurSelType != -1)
			m_ctrlXXMType.SetCurSel(m_CurSelType);
		//如果是通用消息,则应指定通配符
		if(m_CurSelType == 1 || m_CurSelType == 2)
			m_TPF = GetTPF(m_XXMPath);
	}
	else	//如果是添加状态
	{
		m_ctrlXXMType.SetCurSel(0);
		m_CurSelType = 0;
	}
	ShowOrHideSome(m_CurSelType);
	UpdateData(FALSE);
	return TRUE;
}

#include "FolderDialog.h"
void CEditXXMDlg::OnBrow() 
{
	UpdateData(TRUE);
	if(m_CurSelType == CB_ERR) return;
	if(m_CurSelType == 0) //如果是文本文件
	{
		CFileDialog FileDialog(TRUE,NULL,NULL,
								OFN_NOCHANGEDIR,
								"文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||");
		if (FileDialog.DoModal() == IDOK)
		{
			m_strFilePath = FileDialog.GetPathName();
			GetDlgItem(IDC_XXMPATH_EDIT)->SetWindowText(m_strFilePath);
		}
		return;			
	}
	//如果是其它消息类型
	CFolderDialog FolderDlg(NULL,NULL,this);
	if( FolderDlg.DoModal() == IDOK )
	{
		m_strFilePath = FolderDlg.GetPathName();
		m_strFilePath+= "\\";
		SetDlgItemText(IDC_XXMPATH_EDIT,m_strFilePath);
	}	
}

void CEditXXMDlg::OnSelchangeXxmtypeCombo() 
{
	UpdateData(TRUE);
	m_CurSelType = m_ctrlXXMType.GetCurSel();
	ShowOrHideSome(m_CurSelType);
	if(m_CurSelType == 1 || m_CurSelType == 2)
	{
		m_nTitleRow = 0;
		m_TPF = "*.*";
		UpdateData(FALSE);
	}
}

void CEditXXMDlg::OnOK() 
{
	CDialog::OnOK(); //注意,先OK

	UpdateData(TRUE);
	
	if(m_CurSelType == CB_ERR) return;
	
	if(m_XXMTopic.GetLength() > 20)
		m_XXMTopic = m_XXMTopic.Left(20);
	m_XXMType = XXMTypeInt[m_CurSelType];
	//如果是通用消息类型,则应有通配符
	if(m_CurSelType == 1 || m_CurSelType == 2)
	{
		m_TPF.TrimLeft();
		m_TPF.TrimRight();
		if(m_TPF.IsEmpty())	m_TPF = "*.*";
		m_XXMPath += m_TPF;//如果不先OK,则m_XXMPath会重新复原
	}
}

//which为0,表示一般情况;为1表示通用信息,为2表示申银信息
void CEditXXMDlg::ShowOrHideSome(int which)
{
	if(which == 1)
	{
		GetDlgItem(IDC_TPF_EDIT)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_TPF_STATIC)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_STATIC2)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_TITLEROW)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_SPIN1)->ShowWindow(SW_SHOW);
	}
	else if(which == 2)
	{
		GetDlgItem(IDC_TPF_EDIT)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_TPF_STATIC)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_TITLEROW)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_SPIN1)->ShowWindow(SW_HIDE);
	}
	else
	{
		GetDlgItem(IDC_TPF_EDIT)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_TPF_STATIC)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_TITLEROW)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_SPIN1)->ShowWindow(SW_HIDE);
	}
}

void CEditXXMDlg::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;

	UpdateData(TRUE);
	m_nTitleRow -= pNMUpDown->iDelta;
	if(m_nTitleRow < 0) m_nTitleRow = 0;
	if(m_nTitleRow > 10) m_nTitleRow = 10;
	
	UpdateData(FALSE);
	
	*pResult = 0;
}

void CEditXXMDlg::OnKillfocusTitlerow() 
{
	UpdateData(TRUE);
	if(m_nTitleRow < 0) m_nTitleRow = 0;
	if(m_nTitleRow > 10) m_nTitleRow = 10;
	UpdateData(FALSE);	
}